In distributed networks, each individual processor within the network has its own internal clock, by which it coordinates all of its operations. Unfortunately, due to imperfections in the quartz crystals used to generate computer clock signals, the system clock can operate at slightly different frequencies throughout the day. This causes nodes within the network to differ by seconds daily, and these errors can accumulate over time to a large number of minutes. Any lack of synchronization between nodes in a network, can cause severe problems when data fusion is desired.
Many of the clock synchronization methods presented in the prior art involve synchronizing each clock within the network with an external time standard, such as GPS. This method works well for physical clock alignment, meaning that the clocks are aligned to the exact correct time. However, this method is difficult, since it requires an accurate clock source which is often not available to sensor networks, especially to those that are underwater and do not have access to a GPS signal. For example, an undersea network of magnetometers intended for undersea sensing systems, does not have a GPS signal available, or any other accurate clock source for that matter.
Another method heavily discussed in the prior art involves the transmission of time-stamped messages between sensor pairs. This is performed either in a master-slave configuration or peer-to-peer. There are many variations upon this basic premise, which vary solely on the specific implementation details, including such items as whether internal or external synchronization is used, and whether a probabilistic or deterministic algorithm is used. The disadvantages of this approach are many, particularly for a wireless network. First, variable transmission latency between nodes can cause incorrect clock skew calculations, because this calculation relies upon exact knowledge of the transmission latency, and the time at which the time-stamped message was transmitted. Second, this approach requires exact knowledge of the locations of network nodes, in order to determine the transmission latency. Therefore, these methods are very difficult to implement in an ad-hoc network.